Snowflakeでウェアハウスサイズを変更するとロード時間は変わるの? 実際に試してみた
こんにちは!エノカワです。
Snowflakeでは、データのロードやクエリなどの操作を行う際、ウェアハウスを作成して使用します。
ウェアハウスには、X-Small, Small, Medium などのサイズがあり、
サイズによって使用可能なコンピューティングリソースが決まっています。
大規模なデータのロード操作または複雑な計算クエリが必要とされる場合、
より大きなウェアハウスが必要になります。
今回は、ウェアハウスを変更するとデータのロード時間がどう変わるのか実際に試してみました。
概要
ウェアハウスサイズごとにデータのロード時間を測定します。
ウェアハウス
- 使用するサイズは、X-Small, Small, Medium, Large, X-Large の5パターンとする
- マルチクラスターウェアハウスは使用しない
データ
- サンプルデータ
SNOWFLAKE_SAMPLE_DATA.TPCH_SF100
を使用する- 15億件のレコードを持つデータセット
測定方法
ORDERS
テーブルと同じ構造のテーブルを作成するORDERS
テーブルのデータをステージのファイルにアンロードする- 作成したテーブルにアンロードしたファイルをロードし、その処理時間を測定する
- 測定には
QUERY_HISTORY
テーブル関数のEXECUTION_TIME(実行時間)を使用する - 3回実行し、その平均値を測定値とする
- 測定には
ファイルサイズとファイル数
ドキュメントに以下の記載があります。
ウェアハウスのサイズを大きくしても、データロードのパフォーマンスが常に向上するわけでは ありません 。データロードのパフォーマンスは、ウェアハウスのサイズよりも、ロードされるファイルの数(および各ファイルのサイズ)の影響を受けます。
ウェアハウスの概要 — Snowflake Documentation
上記を踏まえ、ファイルサイズ(ファイルの数)が異なるパターンでも測定します。
- アンロードおよびロードするファイルは、ファイルサイズの異なる5パターンを用意する
- ファイルサイズは、アンロードする際に
COPY
コマンドのMAX_FILE_SIZEオプションで指定する - オプションに指定するファイルサイズの値は、1MB, 8MB, 16MB, 32MB, 1024MB の5パターンとする
- 各ファイルサイズを指定してアンロードされたファイルの数は以下の通り
- アンロードされるファイルの上限サイズを変えているので、サイズが小さいほどファイル数は多くなる
ファイルサイズ | ファイル数 |
---|---|
1 MB | 4,772 |
8 MB | 699 |
16 MB | 407 |
32 MB | 237 |
1024 MB | 128 |
測定結果
以下の結果となりました。
ウェアハウスとファイルサイズのマトリクスです。
値はロード処理の実行時間で小数点以下は四捨五入しています。
1 MB | 8 MB | 16 MB | 32 MB | 1024 MB | |
---|---|---|---|---|---|
1. X-Small | 156,045 | 125,818 | 125,501 | 124,803 | 123,652 |
2. Small | 79,671 | 65,440 | 64,789 | 65,435 | 65,898 |
3. Medium | 42,168 | 36,041 | 36,054 | 36,014 | 37,477 |
4. Large | 24,644 | 21,293 | 20,488 | 21,047 | 23,250 |
5. X-Large | 15,068 | 14,219 | 14,266 | 14,938 | 16,994 |
数字だと分かりづらいので、Snowsightでヒートマップ表示してみました。
(小数点以下は丸め表示できなかったため、そのまま表示)
縦軸のウェアハウス間を比較してみると、
ウェアハウスのサイズが大きくなるほど実行時間が短くなっていますね。
どのファイルサイズでも同じ傾向が見られます。
横軸のファイルサイズ間を比較してみると、
1 MBが他のファイルサイズと比べて実行時間が長くなっていますね。
1 MB以外のファイルサイズはあまり差が無いように見えます。
横棒グラフ表示で見てみましょう。
ファイルサイズごとにバーの色が分かれています。
バーの長さ(実行時間)を比較してみると、
X-Smallでは1 MBが最も長く、X-Largeでは1024 MBが最も長くなっています。
ウェアハウスのサイズが大きくなるにつれて、1 MBが短く、1024 MBが長くなる傾向が見られます。
まとめ
以上、ウェアハウスを変更するとデータのロード時間がどう変わるのか実際に試してみました。
ウェアハウスのサイズを大きくすると、ロード時間が短くなることが確認できました。
また、ファイルサイズによってもロード時間が影響を受けることも分かりました。
ファイルサイズが小さければロード時間が短くなるというわけでなく、
ロード処理に適したファイルサイズ(ファイルの数)というのがありそうだと感じました。
今回検証したファイルサイズ以外のパターンを含めると傾向が変わってくるかも知れません。
機会があれば試してみたいと思います。